1. Field of the Invention
This invention relates generally to programmable interconnect circuits, and more particularly to the input and output of data through such a circuit. This invention relates to programmable interconnect circuits, and more particularly to a programmable interconnect circuit having a control array for generating control functions.
2. Description of Related Art
In-system-programmable interconnect devices permit a user to programmably route signals between pins of the device. For example, Lattice Semiconductor Corp. currently manufactures an ispGDX(copyright) family of programmable interconnect devices having a non-volatile E2CMOS(copyright) in-system-programmable crossbar switch matrix for programmable switching, interconnect, and jumper functions. Each pin of the ispGDX(copyright) device is associated with an input/output (I/O) circuit that programmably couples to other I/O circuits through a routing structure denoted as a global routing pool (GRP). The I/O circuits contain registers allowing the input and output signals on the associated pins to be selectively registered.
Referring now to FIG. 1, an input/output circuit 10 for an ispGDX(copyright) device couples to a 4:1 multiplexer (Mux) 12 that receives signals A, B, C, and D from four different routing structures, GRP_A, GRP_B, GRP_C, and GRP_D, (not illustrated) respectively. Each routing structure corresponds to a given quadrant (a side of the integrated circuit) for the device. Accordingly, GRP_A receives the input signals from I/O pins 20 in quadrant A, GRP_B receives the input signals from I/O pins 20 in quadrant B, and so on. Input/output circuit 10 receives its input signals from its pin 20 and directs them to the appropriate global routing structure on path 19. For example, if I/O circuit is within quadrant A, path 19 would couple to GRP_A.
Each routing structure is a switch matrix that may receive input signals from selected I/O circuits and programmably route output signals to selected 10 circuits. For clarity, the individual structures are grouped together and jointly designated by a single routing structure 14. A similar device or circuit is disclosed in U.S. Pat. No. 6,034,541, the contents of which are hereby incorporated by reference in their entirety. In addition, each global routing pool has a switch matrix fused by an in-system-programmable non-volatile E2CMOS(copyright) memory bank, configured for one-way routability. A given memory cell in the volatile E2CMOS(copyright) memory bank controls the state of a xe2x80x9cfuse pointxe2x80x9d in the switch matrix. The fuse point may be formed by, e.g., a pass transistor that will programmably connect an input lead of the switch matrix to an output lead of the switch matrix, depending upon the logical state (high or low) of the fuse point""s memory cell. I/O pins 20 to the device are arranged in quadrants (the four sides to the chip) such that an individual routing structure receives signals from the I/O circuits 10 in a single quadrant and may distribute these signals to the I/O circuits 10 in all four quadrants. Thus, the four input signals A, B, C, and D for each Mux 12 are xe2x80x9cquadrantxe2x80x9d limited to originate in their respective quadrants. Note that, with respect to routing structure 14, each I/O circuit 10 is independent and separate from the remaining I/O circuits. Because routing structure 14 distributes signals independently to each I/O circuit 10, the resulting arrangement may be denoted as xe2x80x9cpin-orientedxe2x80x9d or xe2x80x9cbit-orientedxe2x80x9d in that each I/O circuit 10 associates with a single I/O pin 20.
Similar to the data signals, control signals, such as the set/reset, clock, and clock enable (CE) for an input/output register (not illustrated) located within I/O circuit 10, the output enable (OE) for an output buffer (not illustrated) located within I/O circuit 10, as well as the MUX selects for MUX 12, are also limited to originating in a subset of pins 20 from each quadrant. Moreover, the prior art device had no control logic capability for these control signals such that the control function for each signal was limited to a single pin.
Although this xe2x80x9cbit-orientedxe2x80x9d architecture allowed a user to programmably interconnect signals through the device, the number of fuses in the resulting global routing pool becomes prohibitive as the pin count increases. However, modern board density continues to increase, demanding an interconnect device having a suitable number of pins to interconnect the signals.
Accordingly, there is a need in the art for an improved programmable interconnect device that uses fewer fuses and provides a control function capability for the I/O cells"" control signals.
In accordance with one aspect of the invention, a programmable interconnect circuit includes a plurality of I/O cells arranged into I/O blocks. Each I/O block has its own routing structure programmably coupling signals between the I/O block and the I/O cells in the remaining I/O blocks. In this fashion, an I/O cell in a given I/O block may programmably receive control signals from the I/O cells in the remaining I/O blocks. For each I/O block, an AND array programmably generates product-term control signals from control signals received from its I/O block""s routing structure. The product-term control signals control registers and multiplexers within each I/O block""s I/O cells.